package com.softeem.nbl2;

/**
 * 静态的内部类
 * static不可以修饰外部类,但是可以修饰内部类
 * 这种用static修饰的内部类就是静态内部类
 *
 * 回顾一个问题:
 *  在静态方法中,我们能够访问哪些东西?
 *  静态方法中只能直接访问静态的成员
 *
 *  特点:
 *      静态内部类中,只能直接访问外部类中静态的成分
 *      原因:
 *          非静态的内部类编译之后会默认保存在一个指向外部的引用中,但是静态的内部类没有
 */
public class Outer_03 {
    private int a = 10;
    public int b = 20;
    public static int c = 30;
    private static int d = 40;

    public void m1(){
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
    }

    public static void m2(){
        //System.out.println(a);
        //System.out.println(b);
        System.out.println(c);
        System.out.println(d);
    }

    //静态的内部类
    public static class Inner{
        //静态内部类中的静态方法
        public static void m3(){
            //System.out.println(a);
            //System.out.println(b);
            System.out.println(c);
            System.out.println(d);
        }

        //静态内部类中的非静态方法
        public void m4(){
            //System.out.println(a);
            //System.out.println(b);
            System.out.println(c);
            System.out.println(d);
        }
    }

}
